>>محمد سوری ( شنبه 86/6/3 :: ساعت 1:58 صبح)
یکی از مشکلاتی که در رابطه با برنامههایی که حاوی پایگاه داده هستند وجود دارد، مشکل انتقال آنهاست به اینصورت که پس از انتقال به سیستم دیگر و یا حتی ذخیره سازی در مسیری دیگر،با پیغام خطایی مبنی بر عدم وجود پایگاه داده روبهرو میشویم.
علت وجود این امر، آدرسدهی مطلق به پایگاه داده است. آدرسدهی مطلق مثلاً به صورت زیر است:
C:\Delphi Programs\Test Program\Database
در حالیکه آدرسدهی نسبی، نسبت به مسیر جاری است.
برای رفع این مشکل، باید آدرسدهی پایگاه داده و جداول، به صورت نسبی در هنگام اجرای برنامه (Runtime) باشد.
مسأله فوق را درون هر زبان برنامهسازی می توان به کار برد. در اینجا نحوه انجام این کار در دلفی آموزش داده خواهد شد.
برای انجام این کار، ابتدا باید محل جاری اجرای برنامه را بیابیم. برای یافتن این مسیر، کدهای مورد نیاز در اولین فرمی نوشته میشود که با اجرای برنامه، اجرا میشود.
ابتدا باید متغیری سراسری (Public) تعریف کنیم تا از تمامی فرمها قابل دسترس باشد. برای این کار، در قسمت Public اولین فرم برنامه، متغیری به صورت زیر تعریف می کنیم (
شکل 1):
;StrCurrentDir: String
در رویداد OnShow اولین فرم، کدهای زیر را بنویسید (
شکل 2):
;(GetDir(0, StrCurrentDir
با اجرای دستور فوق، مسیر جاری برنامه (محل قرارگیری فایل اجرایی برنامه با پسوند Exe)، در متغیر StrCurrentDir قرار خواهد گرفت که برای آدرسدهی نسبی، از آن استفاده خواهیم کرد.
مرحله بعدی، قرار دادن پایگاه داده و یا جداول برنامه در مسیری است که فایل اجرایی برنامه قرار دارد.
در مثال مورد نظر من، پوشهای با نام Database تعریف شده که جدول employee.db در آن قرار دارد.
البته فایلهای پایگاه داده و یا جداول را در مسیر جاری هم می توان قرار داد (ولی پیشنهاد نمیکنم)!
آخرین مرحله، آدرسدهی به جداول در هنگام اجراست. برای این کار، می توان در همان رویداد OnShow اولین فرم و یا هرجایی که نیاز به آدرسدهی است، از متغیر StrCurrentDir استفاده کرد.
از آنجایی که نوع پایگاه داده مورد استفاده، Paradox می باشد فقط نیاز به یک شی Table از سربرگ BDE داریم.
نکته: در این مثال، شی Table در Form2 قرار دارد.
برای آدرسدهی به این شی، کدهای زیر را مینویسیم (
شکل 3):
;"Form2.Table1.DatabaseName:=StrCurrentDir+"\Database
;"Form2.Table1.TableName:="employee.db
;Form2.Table1.Active:=True
نکته: بقیه تنظیمات مربوط به DBGrid، DataSource و ...، باید به همان روش معمول انجام شوند.
از این پس، با خیال راحت می توانید پروژه خود را جابهجا و یا منتقل کنید و نگران اجرا نشدن آن نباشید.
نمونه برنامهای نوشته شده می توانید توسط لینک زیر دانلود کنید.
دانلود نمونه برنامه